﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Castle.ActiveRecord;

namespace ServiceGerenciador.Model
{
    [Serializable]
    //[ActiveRecord("Pessoas"), JoinedBase]
    [ActiveRecord("Pessoas")]
    public class Person : ActiveRecordBase<Person>
    {
        public Person()
        {

        }
        [PrimaryKey("Id")]
        public int Id { get; set; }
        //HasMany e BelongsTo podem ser usados em uma classe pai e filho, 
        //respectivamente, para indicar uma relação um-para-muitos
        [BelongsTo("IdEstado")]
        public Estado Estado { get; set; }
        [Property]
        public string Nome { get; set; }
        [Property]
        //public string Sobrenome { get; set; }
        //[Property("Sexo", SqlType = "bit")]
        public eSex? Sexo { get; set; }
        [Property]
        public string CPF { get; set; }
        [Property]
        public string RG { get; set; }
        [Property]
        public DateTime? DataNascimento { get; set; }
        [Property]
        public string Bairro { get; set; }
        [Property]
        public string Endereco { get; set; }
        [Property]
        public string Cidade { get; set; }
        [Property]
        public string CEP { get; set; }
        [Property]
        public string FonePrincipal { get; set; }
        [Property]
        public string FoneCelular { get; set; }
        [Property]
        public string Email { get; set; }
        [Property]
        public string IE { get; set; }
        [Property]
        public string Obs { get; set; }


        public static Person[] Pesquisa(string termo, string campo)
        {
            var pes = FindAll();
            if (campo == "Nome")
            {                
                return pes.Where((p) => (p.Nome.ToUpper().Contains(termo.ToUpper()))).ToArray();                    
 //              return pes.Where((p) => (p.Nome.Contains(termo.ToLower()) || p.Nome.Contains(termo.ToUpper()))).ToArray();
            }else
            {
               return pes.Where((p) => (p.CPF.Contains(termo))).ToArray();               
            }
       }
    }
}